#include<bits/stdc++.h>
using namespace std;
//long long     !!!!
//freopen        !!!
// many tests      CLEAR   !!!!
long long n,k=1,m,basea[100010],C[100010];
bool b[18][131080],h[100010],f1=true;
int c[18][131080];
long long mi2[30],X[4],a[100010];
int T;
void init(){
    memset(h,false,sizeof(h));
    long long j=1;mi2[0]=1;h[1]=1;
    for(int i=1;i<=20;i++){
        j*=2;h[j]=1;
        mi2[i]=j;
    }
}
int findk(int x){
    for(int i=0;i<=20;i++){
        if(mi2[i]==x) return i; 
    }return 0;
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    freopen("arena.in","r",stdin);
    freopen("arena.out","w",stdout); 
    init();
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>basea[i];
    for(int i=1;i<=m;i++){
        cin>>C[i];
        if(!h[C[i]]) f1=false;
    }
    for(int i=1;i<=20;i++){
        if(mi2[i]>=n){k=i;break;}
    }
    for(int i=1;i<=k;i++){
        for(int j=1;j<=mi2[k-i];j++){
            char ch;cin>>ch;
            if(ch=='0') b[i][j]=false;
            else b[i][j]=true;
        }
    }cin>>T;
    for(int I=1;I<=T;I++){
        memset(c,0,sizeof(c));
        cin>>X[0]>>X[1]>>X[2]>>X[3];
        for(int i=1;i<=n;i++){
            a[i]=basea[i]^X[i%4];
            c[0][i]=i;
        }
        if(f1){
            int ans=0;
            for(int i=1;i<=k;i++){
                for(int j=1;j<=mi2[k-i];j++){
                    if(b[i][j]==0){
                        if(a[c[i-1][j*2-1]]>=i) c[i][j]=c[i-1][j*2-1];
                        else c[i][j]=c[i-1][j*2];
                    }else{
                        if(a[c[i-1][j*2]]>=i) c[i][j]=c[i-1][j*2];
                        else c[i][j]=c[i-1][j*2-1];
                    }
                }
            }
            for(int i=1;i<=m;i++){
                int kk=findk(C[i]);
                ans^=(c[kk][1]*i);
            }cout<<ans<<"\n";
            continue;
        }
        // for(int i=n;i<=mi2[k];i++) c[0][i]=-1;
        // for(int i=1;i<=k;i++){
        //     for(int j=1;j<=mi2[k-i];j++){
        //         if(b[i][j]==0){
        //             if(a[c[i-1][j*2-1]]>=i) c[i][j]=c[i-1][j*2-1];
        //             else c[i][j]=c[i-1][j*2];
        //         }else{
        //             if(a[c[i-1][j*2]]>=i) c[i][j]=c[i-1][j*2];
        //             else c[i][j]=c[i-1][j*2-1];
        //         }
        //     }
        // }
    }
    return 0;
}